Developing applications using configurable patterns

ABSTRACT

Methods, systems, and computer program products, implementing techniques for developing applications using configurable patterns. The techniques include determining the functionality of a pre-existing application; selecting one or more patterns based on the functionality of the pre-existing application, and configuring the patterns so that the patterns execute similar functionality as the pre-existing application. The patterns comprise multiple pattern elements including prearranged user interface elements. The patterns specify predefined actions that can be performed using the user interface elements. The predefined actions match actions performed by the pre-existing application. Configuring the patterns includes importing database structure from a database used by the pre-existing application, generating a visual model of a query performed on the database by the pre-existing application, converting the visual model of a query into a query statement, and configuring the patterns to use the query statement.

BACKGROUND

The present invention relates to data processing by a computing device,and more particularly to developing applications using configurablepatterns.

A user interface (UI) facilitates interaction between humans andcomputers by inviting and responding to user input. User interfaces comein many varieties, and are designed to work in concert with applicationprograms. Application programs, sometimes referred to simply asapplications, are programs that an end-user runs to accomplish certaintasks. Applications typically work in conjunction with one or moreback-end systems, which store the data to be worked on (e.g., businessobjects and other business data), as well as logic for manipulating thedata (e.g., transactions or other business logic). Examples of back-endsystems include database systems, enterprise resource planning (ERP)systems, and customer relationship management (CRM) systems.

A common scenario involving user interfaces is a network application,where a network connects an application program running on a server andone or more user interfaces displayed in client programs running onclient devices. The client/server relationship is one in which a serverprovides services to the client devices. Both the client devices and theserver typically have a network interface for accessing networks such asa local area network (LAN), a wide area network (WAN), or the Internet.

In a network environment, a common client device is a personal computer,and a common client program is a Web browser. The client program, whichdisplays a user interface for an application running on a server,enables networked communication between the client device and the serverusing a data transfer protocol (e.g., the Hypertext Transfer Protocol(HTTP)) to exchange files, images, programs, and/or application data.HTTP is a request/response-type protocol that specifies how the clientdevice and the server communicate with each other. The server mayreceive a request from the client device using HTTP, respond to therequest, and then close the connection. HTTP is a stateless protocol,meaning that each time a client device requests a Web page, the serverwill respond to the request independently of any previous requests fromthe client device, and without recording the request.

The information transmitted from the server and intended for display bythe client program on the client device may be described with HypertextMarkup Language (HTML) code or Extensible Markup Language (XML) code.HTML is a language that is used to describe the structure of a document,such as a Web page. Client programs interpret HTML code to determine howto display the information contained in the page. A user may request aWeb page from a server by clicking on a hyperlink or specifying aUniform Resource Locator (URL) string. A URL can be used to identify theaddress of a file or Web page that may be accessed on a network. Theaddress identifies the Web server on which the file or Web page isstored and the directory in which the item is located. When the serverreceiving the URL request finds a sought Web page, the server sends thepage to the client device so that the client device can use that Webpage, for example, by generating a display for a user according to theWeb page.

An application usually implements the functionality required to displayand execute one or more user interfaces for the application. For thisreason, an application is sometimes referred to as a user interfaceapplication. In some cases, part of the user interface functionality(e.g., rendering) may be handled by a client program that interacts withthe application. Whether or not this can occur depends on thecapabilities of the client program.

Companies typically use many applications in the course of theirbusinesses. For example, they may use one application for sales and adifferent application for inventory management. Typically eachapplication is accessed through a separate user interface.

Recently, companies have started to unify their applications so thatthey can be accessed through a single interface, in some cases referredto as a portal. However, many companies who have a portal also havelegacy applications that cannot be accessed through the portal.Migrating these legacy applications so that they can be executed in aportal environment often requires rewriting the application code, aprocess that can take several weeks.

SUMMARY OF THE INVENTION

Methods, systems, and computer program products, implementing techniquesfor developing applications using configurable patterns.

In one aspect, the techniques include developing a pattern-basedapplication that matches the functionality of a pre-existing applicationby selecting a pattern from a set of patterns, importing databasestructure from a database used by the pre-existing application,generating a visual model of a query performed on the database by thepre-existing application, converting the visual model of a query into aquery statement, and configuring the pattern to use the query statement.The pattern comprises multiple pattern elements including prearrangeduser interface elements. The pattern specifies predefined actions thatcan be performed using the user interface elements. The predefinedactions match actions performed by the pre-existing application.

The techniques can be implemented to include one or more of thefollowing features.

Importing database structure from a database includes communicating withthe database through a generic interface layer that provides a genericway to communicate with different types of back-end databases developedby different database vendors. The generic interface layer uses JDBC(Java Database Connectivity) technology.

The visual model of a query is generated using a visual query modeler,the visual query modeler being a tool that generates a visual model of aquery and allows a user to modify the query by manipulating the visualmodel of the query. The visual query modeler is an on-line tool thatruns in a web browser.

The query statement takes as input one or more input fields and producesas a output one or more output fields; and configuring the pattern touse the query statement includes selecting which input fields and outputfields to be displayed by the pattern.

Configuring the pattern to use the query statement includes adapting thequery statement to include one or more additional output fields selectedbased on relations in the database.

The techniques further comprise automatically generating one or moreadditional queries based on the selected pattern.

In another aspect, the techniques include determining the functionalityof a pre-existing application; selecting one or more patterns based onthe functionality of the pre-existing application, and configuring thepatterns so that the patterns execute similar functionality as thepre-existing application. The patterns comprise multiple patternelements including prearranged user interface elements. The patternsspecify predefined actions that can be performed using the userinterface elements. The predefined actions match actions performed bythe pre-existing application.

The techniques can be implemented to include one or more of thefollowing features.

Configuring the patterns includes importing database structure from adatabase used by the pre-existing application, generating a visual modelof a query performed on the database by the pre-existing application,converting the visual model of a query into a query statement, andconfiguring the patterns to use the query statement.

Importing database structure from a database includes communicating withthe database through a generic interface layer that provides a genericway to communicate with different types of back-end databases developedby different database vendors. The generic interface layer uses JDBC(Java Database Connectivity) technology.

The visual model of a query is generated using a visual query modeler,the visual query modeler being a tool that generates a visual model of aquery and allows a user to modify the query by manipulating the visualmodel of the query. The visual query modeler is an on-line tool thatruns in a web browser.

The query statement takes as input one or more input fields and producesas a output one or more output fields; and configuring the patterns touse the query statement includes selecting which input fields and outputfields to be displayed by the patterns.

Configuring the patterns to use the query statement includes adaptingthe query statement to include one or more additional output fieldsselected based on relations in the database.

The techniques further comprise automatically generating one or moreadditional queries based on the selected pattern.

The techniques can be implemented to realize one or more of thefollowing advantages. Graphically presenting a pattern and patterncomponents to a user assists a user in intuitively understanding theresponsibilities of each part of a configuration. The understanding maybe enhanced by allowing a user to “zoom in/zoom out” to particularportions of the configuration. Thus, the user is presented with ahigh-level pattern diagram while still being able to obtain informationregarding low-level components. The graphical presentation can alsosuppress many details of a pattern to keep the complexity of theconfiguration operation small.

The graphical presentation can also assist a user in configuring apattern. In particular implementations, in fact, at least some of theconfiguring operations may be automated. Additionally, the presentationcan restrict a user to those actions that are possible for configuring apattern.

Pattern-based migration allows for applications to be migrated quicklyand in a declarative manner, without any coding.

Pattern-based migration enables the applications to have a common lookand feel. Users will benefit from a more uniform interface acrossdifferent applications.

Pattern-based migration allows for stand-alone applications to be easilyconverted into on-line applications accessible through a portal. Thismakes it more convenient for users, who can now access multipleapplications in a central place, the portal. Also, any run-time servicesprovided by the portal (e.g., support for multiple foreign languages, orsupport for styles and branding) is automatically available to allapplications executing in the portal.

One implementation of the invention provides all of the aboveadvantages.

Details of one or more embodiments of the invention are set forth in theaccompanying drawings and in the description below. Other features,objects, and advantages of the invention will be apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a screenshot of a user interface.

FIG. 2 is a block diagram illustrating the configuration of a UIpattern.

FIG. 3 is a block diagram illustrating the use of a configurationapplication.

FIGS. 4A-4C illustrate block diagrams of three implementations of a UIpattern.

FIG. 5 is a block diagram of a framework for simplifying applicationdevelopment.

FIGS. 6A-6B are block diagrams of a configurable pattern component for asearch pattern.

FIG. 7 is a block diagram illustrating different roles and functionsinvolved in the development and use of UI patterns.

FIGS. 8-10 illustrate examples of patterns that can be configured with agraphical configuration tool.

FIGS. 11A-B illustrate an example of configuring a pattern with agraphical configuration tool.

FIG. 12 illustrates another pattern that can be configured with agraphical configuration tool.

FIG. 13 illustrates another way of configuring a pattern with agraphical configuration tool.

FIGS. 14A-E illustrate an automated pattern configuration that agraphical configuration tool can perform.

FIGS. 15A-B illustrate application migration scenarios.

FIG. 16 illustrates a system for migrating applications over topatterns.

FIG. 17 illustrates an interface layer.

FIGS. 18A-B illustrate a method for migrating applications over topatterns.

FIG. 19 illustrates design-time services provided by the migrationsystem.

FIG. 20 illustrates a visual model of a database.

FIGS. 21A-B illustrate a visual model of a query and a query statementcorresponding to the visual model.

FIG. 22 illustrates a query being used with a pattern.

FIG. 23 illustrates one implementation of a visual database modeler anda visual query modeler.

FIGS. 24-30 illustrate an example migration.

Like reference numbers and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION Overview of UI Patterns

FIG. 1 illustrates a screenshot of a user interface 100. User interfacestypically contain various UI elements, including controls (e.g., dropdown element 125 a, text box element 125 b, or button element 125 c) anddata elements (e.g., content area 135), arranged into applicationscreens or views. The design of a user interface, including the layoutof the UI elements and the navigation between the UI elements andbetween the views, is usually left up to the application developer.Thus, if the task of developing the same application is given to anumber of application developers, each developer may design a differentuser interface for that application. Although each version of theapplication implements the same functionality, the user interfaces maybe significantly different from each other.

A more constrained and structured approach to developing user interfacesis to build them using user interface patterns. A UI pattern (sometimesreferred to simply as a pattern) is a configurable, reusable userinterface unit designed to let users accomplish a specific butgenerically-defined task, such as searching for business objects, andediting the objects that are retrieved. Generally, each UI pattern has aspecific semantic meaning and defined interaction behavior. In oneimplementation, each UI pattern includes a predefined arrangement of UIelements. Using UI patterns promotes uniform design throughout anapplication or group of applications because similar tasks arerepresented and handled in the same manner. For example, a user canalways search in the same way, whether searching for a sales order, abusiness partner, or a product.

UI patterns can be defined at various levels, and can be nested withineach other, thus creating hierarchies of patterns. At the top level ofthe hierarchy, a pattern can act as a “floor plan” for a user interfacethat is designed to help end-users complete a specific business process.The floor plan defines the user interface by specifying an overallscreen layout for the user interface and managing and orchestrating anynested patterns.

One example of an important business process is working with businessdocuments. A business document (e.g., a sales order or an invoice) is ahigh-level business object that can contain references to other businessobjects (e.g., objects corresponding to the items in a sales order andto the customer that placed the sales order). The process of workingwith business documents typically involves finding an existing businessdocument or creating a new business document, and then displaying andediting the document. To help a user accomplish these tasks, anapplication should include a user interface that assists the user inlocating the business document to be edited, and then presents thelogical parts of the business document (e.g., the referenced objectsthat contain the customer data and the sales order items) in a clear andstructured manner. The user interface should display the relevant datain an appropriate format for the given context (e.g., in a table, aform, or a chart). The user interface should also provide input helpwhere applicable, and supply application documentation if needed. Afterthe user has finished editing the business document (including objectsreferenced by the document), the user interface should also help theuser carry out post-editing tasks, such as printing out the businessdocument, and performing document lifecycle actions (e.g., saving,deleting, creating, or updating).

An example floor plan for such a user interface can specify that anapplication screen is to be divided into three sections, with a topsection for searching for and selecting business objects, a middlesection for showing the details of an object selected in the topsection, and a bottom section for showing the details of a sub-object ofthe object in the middle section.

More detailed, lower-level patterns can be used for each of the sectionsspecified in a floor plan. For example, an object identification pattern(OIP) can be used for the top section in the floor plan specified above.An OIP pattern (an example of which is provided below), can specify, forinstance, that a section of the screen is to include a search bar withvarious text entry fields and buttons at the top, and an area below thesearch bar where content (i.e., the content returned as a result of asearch) is to be displayed.

This process can continue with the definition and hierarchical nestingof even lower-level patterns. For example, the OIP pattern above canspecify that the content display area is to include a table control fordisplaying the results of a search. The table control can be a complexcontrol that lets users perform tasks such as selecting and sorting rowsin the table, and editing entries directly in the table. In thisscenario, the table control itself can be thought of as a low-levelpattern.

The user interface 100 shown in FIG. 1 illustrates an example of apattern-based user interface. The user interface 100 has a floor planthat includes an object identification pattern (OIP) 105 and two objectdata patterns (ODPs) 110 and 115. As described below, objectidentification pattern 105 and object data patterns 110 and 115 are madeup of embedded lower-level patterns, such as a data view, a form pane, alist pane, or a chart pane. Each embedded pattern can include furtherembedded patterns, including, for example, tool bars, tables, tabstrips, and other UI pattern elements.

Object identification pattern 105 is a pattern that provides aninterface for searching for objects (using zero or more selectedcriteria), and for displaying objects found to meet those criteria. Likethe floor plan pattern, OIP 105 is itself a pattern with severalembedded elements. Object identification pattern 105 includes a titlebar 120, a search bar 125, a tool bar 130, and a content area 135.

Title bar 120 orients the user. Search bar 125 enables the user to enterzero or more search criteria to locate objects of interest. For example,search bar 125 includes a drop down element 125 a that lists the fieldsfor which the user can enter a search term. Drop down element 125 aillustrated in FIG. 1 shows that the user has selected the field“Status” for searching. Search bar 125 also includes a text box element125 b that allows a user to enter a search term to identify the objectsof interest. Text box element 125 b illustrated in FIG. 1 shows that theuser has entered “Open” as the value to find in the “Status” field.Search bar 125 also includes a “Go” button element 125 c that initiatesthe search based on user input in elements 125 a and 125 b. With theword “Get” located in front of drop down element 125 a, search bar 125reads “Get Status Open Go”, which provides a reusable and intuitivelyunderstandable mechanism for initiating user searches.

Search bar 125 also includes an “Advanced” button element 125 d thatallows a user to initiate an advanced search. Upon pushing button 125 d,a form pane is rendered between search bar 125 and tool bar 130. Theform pane can include, for example, each of the fields that are in dropdown element 125 a, and a text box besides each field. Thus, the usercan enter search terms for multiple fields to create more focusedsearches, thereby limiting the number of objects that appear in contentarea 135.

Tool bar 130 provides functions that the user can perform on the objectsdisplayed in the content area 135, such as create, save, and add to anddelete from the user's list of favorite objects. Tool bar 130 alsoincludes a toggle control 130 a that allows a user to toggle the layoutof content area 135 between different types of panes that providedifferent representations of the objects retrieved by a search. Forexample, a list pane displays a tabular representation of the objects(as illustrated in FIG. 1). A form pane displays the object that iscurrently selected, with each field in the object having a control(e.g., a text box, a pull down menu, or a check box) to enable a user tochange data associated with that field. As another example, a chart panecan display a graphical representation of the retrieved data. Panes canbe developed to meet specific needs, and can be integrated as low-levelpatterns into high-level patterns such as OIPs and ODPs.

As indicated above, content area 135 displays those objects that meetthe search criteria specified by the user. Selecting an object incontent area 135 determines what is displayed in object data pattern(ODP) 110. ODP 110 is a pattern that displays detail data associatedwith the selected object from content area 135. ODP 110 includes a tabbar 140, a tool bar 145, and a content area 150. Tab bar 140 selects thetype of data that is displayed in content area 150. FIG. 1 depicts the“Products” tab as having been selected, so the data in content area 150corresponds to product data (e.g., a list of products with item numbers,product descriptions, quantities, and the like) associated with theobject selected in content area 135. Tool bar 145 includes a togglebutton 145 a that allows a user to toggle the layout of content area 150between a list pane (as currently illustrated in FIG. 1) and anothertype of pane (e.g., a form pane or a chart pane).

Selecting an object in content area 150 determines what is displayed inobject data pattern (ODP) 115. ODP 115 is a pattern that displays detaildata associated with the selected object from content area 150. ODP 115includes a tab bar 155 and a content area 160. Tab bar 155 selects thetype of data that is displayed in content area 160. FIG. 1 depicts the“Item Detail” tab as selected, so the data in content area 160corresponds to item detail data (e.g., a form pane with item detailssuch as product description, quantity, net value, status, and the like)associated with the object selected in content area 150.

As an example of a different floor plan, ODP 115 can be replaced with aguided data entry pattern (GDP). A GDP is a pattern that guides the userthrough a sequence of operations in a task. A GDP can contain anoperation bar and a data entry area, similar to tab strip 155 andcontent area 160 of ODP 115. The operation bar of the GDP however,represents the operations of the guided process. For example, using tabstrip 155 for illustration, the “Item Detail” tab would be a “Step 1”tab, the “Product Information” tab would be a “Step 2” tab and so on. Inexecution, the GDP would start on the “Step 1” tab and display in thedata entry area the fields that the user must enter for the firstoperation of the process. When the user clicks on the “Step 2” tab, thedata entry area would change for the second operation of the process. Inone implementation of a GDP, the user is not permitted to performoperations out of sequence (e.g., to go from the “Step 1” tab to the“Step 3” tab), or to proceed to the next operation until the currentoperation is completed (e.g., the user is not allowed to select asubsequent tab or enter data for a subsequent tab until data entry forthe current tab is complete). In another implementation, whether or notthe user is allowed to perform operations out of sequence is left as achoice for the application developer to specify as part of aconfiguration for a GDP.

The UI patterns described above and in the remainder of this application(e.g., OIPs, ODPs, and GDPs) are meant to serve only as illustrative,concrete examples of patterns. Patterns can be created to let usersaccomplish any generically-defined task, and the concepts and techniquesdescribed in this application apply to and can be used with all suchpatterns, and are not to be restricted to the example patterns discussedherein.

Configuring UI Patterns

User interface 100 of FIG. 1 illustrates a particular application thatis based on the patterns described above. Such an application will bereferred to as a pattern-based application, a pattern application, orsimply an application. As explained above, UI patterns are reusable userinterface units designed for generic tasks—for example, an OIP patternis designed for the task of searching for and selecting business objectsstored in a back-end system (e.g., a database). In order to create aconcrete user interface (e.g., user interface 100 with OIP 105), UIpatterns need to be configured. FIG. 2 illustrates an example in which aUI pattern 210 is configured (shown using arrows 220 and 230) to createtwo UI applications 240 and 250. Configuration one 220 is used to createapplication one 240, and configuration two 230 is used to createapplication two 250.

Configuration is the process through which a UI pattern is developedinto an actual user interface (or portion thereof) for an actualapplication. For illustrative purposes, this might be compared toinstantiating an object of a specified class—the UI pattern (comparableto a class) specifies the general properties of a portion of a userinterface, and a configured pattern (comparable to an instantiatedobject) specifies the actual properties of the portion of the userinterface for an actual application. UI pattern 210 represents thegeneral properties of the UI portion—for example, that a table isincluded in that UI portion, and that the location of the table is undera title bar. Configuration one 220 represents the process of specifyingthe specifics of the UI portion (for example, the specific columns thatwill be included in the table when the table is rendered), so as tocreate an application (for example, application one 240) that displays aUI with a table under the title bar with specific columns defined byconfiguration one 220. Similarly, application two 250 displays a table,but with specific columns as defined by configuration two 230.

A configuration can also specify what back-end systems and data are tobe used for a pattern. For example, configuration one 220 can specify aparticular back-end system (e.g., a local or remote database system) anda particular service to use to access the data on that back-end systemthat is to be displayed in the table in the UI pattern 210. Examples ofservices that can be used to access a host system include web services,Enterprise Java Beans (EJBs), Business Application ProgrammingInterfaces (BAPIs) developed by SAP AG of Walldorf (Baden), Germany(SAP), and other business logic services.

As another example of a configuration, an OIP might specify that a userinterface is to include a search bar at the top of the interface and acontent area below the search bar. The search bar is to include a dropdown box for selecting a search field, a text box for entering a querystring, and a “Go” button for executing searches. Configuring such apattern is the process of providing specifics for the pattern for anactual application. For example, to configure the OIP pattern, anapplication developer can specify the search fields to be included inthe drop down box, the query to run when the “Go” button is pressed, theback-end system in which to run the query (i.e., the system where theactual data is located), and the columns from the returned results todisplay in the content area.

In some implementations, a UI pattern can have a number of predefinedlayouts (e.g., a grid layout and a flow layout), and the applicationdeveloper can decide which of the available layouts to use as part ofthe configuration process. Moreover, each layout can be furtherconfigurable, providing the application developer with furtherconfiguration options (e.g., an option to create groupings of fields orother elements). In yet other implementations, a pattern can be definedto have a fully configurable layout, giving the application developercomplete freedom to modify the arrangement of the elements in thepattern (e.g., by using a graphical configuration tool to specify screenpositions for each element in the patter).

Thus, the degree to which each UI pattern is configurable can vary. Forexample, the degree to which the arrangement of elements in a patterncan be configured can vary across a spectrum—for some patterns, thearrangement of UI elements can be fully predefined, leaving noconfiguration options for the application developer; for some patterns,the application developer can be given an option to choose between ahandful of predefined arrangements; and for other patterns, theapplication developer can be given full freedom to define a customarrangement of elements.

Other pattern properties can also be partially or fully configurable.For example, a developer can be given no options or a few optionsregarding the actions to be performed by a UI element in a pattern. Orthe developer can be allowed to define and associate a custom actionwith an element in a pattern.

As can be seen from the prior discussion, the term “configuration” canbe used in multiple ways. First, “configuration” is the process by whicha pattern is developed into a concrete user interface (or portionthereof) for a concrete application. A “configuration” also refers tothe data that is produced as a result of the configuration process(i.e., it is the set of data that defines a concrete user interfacebased on a pattern). Finally, “configuration” can also be used to referto the set of options provided during the configuration process. As usedin this manner, a selected option in a configuration produces a defineditem of configuration data.

The use of patterns to develop applications creates two potential levelsof re-use. First of all, patterns serve as re-usable building blocks forbuilding user interfaces. For example, an OIP can be used to create twodifferent user interfaces—a first configuration can define a userinterface for searching for business objects related to customers(customer objects), and a second configuration can define a second userinterface for searching for business objects related to inventory(inventory objects).

In addition, configurations can be reused, meaning that theconfigurations themselves can serve as re-usable building blocks forbuilding applications. Thus, in the example above, the OIP configurationthat defines a user interface for searching for customer objects can beintegrated and used in two different applications (e.g., a customerrelationship management application and a billing application).

The configuration of a UI pattern can be done either manually (e.g.,with a text editor), or through the use of a configuration application.A configuration application facilitates the process of configuring a UIpattern. In one implementation, the configuration application displaysmultiple configuration options for the application developer to select.As the selections are made, the configuration application displays aWYSIWYG representation of the resulting configured user interface,thereby allowing the application developer to preview his selections andmake any necessary modifications. The configuration options can includelists of the available back-end systems, queries, query fields, andquery results.

Once the application developer has finished selecting the configurationoptions, the selections are stored as configuration data for the UIpattern. The configuration data can include associations between one ormore of the UI elements in the UI pattern and one or more of theback-end entities to be used with the UI pattern. As an example,configuration data for the OIP described above can include aspecification of the back-end system to be used, the query to be run inthe back-end system, the query fields to show in the drop down box, andthe result fields to display in the content area.

The configuration data can also include customization data for one ormore of the UI elements in the UI pattern. The customization data canspecify local changes to the business objects associated with the UIelements. For example, a drop-down menu item might be associated with aback-end query field called “UID”. The customization data may specifythat the “UID” field should be displayed using a more user-friendlylabel, for example, “reference number”. Such a customization appliesonly to the particular UI element in the particular application beingconfigured, and does not affect how the business object is representedin the back-end system or how the business object is represented byother UI elements in other applications that use the same UI pattern.

The configuration data can be stored in a configuration repository. Inone implementation, the configuration data is stored in one or morefiles. Such files can be nested to reflect a hierarchical arrangement offurther UI patterns. The configuration data can then be read by apattern component, which generates the implementation of the actual userinterface for the application based on the configuration data.

FIG. 3. illustrates the use of a configuration application 305 to create310 configuration data 315, which is combined 320 with a UI patterncomponent 325 to produce a pattern-based application. The configurationapplication 305 generates configuration data 315 that is specific topattern component 325. That is, the configuration application 305 canensure that a configuration schema for pattern component 325 isfollowed.

The generation of a pattern-based application based on a configurationcan be done either immediately after the configuration has beencompleted, or at a subsequent point in time, such as when thepattern-based application is executed.

For example, in the scenario described above where a configurationapplication produces configuration data for a pattern component, thepattern component can read the configuration data and generate thepattern-based application immediately after the configuration data hasbeen produced. This is referred to as a design-time generation of apattern-based application, since the generation occurs when theconfiguration is produced (i.e., when the configured pattern orapplication is designed).

Alternatively, the pattern component can read the configuration data andgenerate the implementation of the corresponding pattern-basedapplication when the pattern-based application is executed by anend-user. This is referred to as a run-time or on-demand generation of apattern-based application. In one implementation, the choice of whetherthe implementation of a pattern should be generated at design time or atrun time is left as an option for the application developer. The use ofconfiguration data to generate an implementation of a pattern (e.g., aconfigured pattern component) is described in more detail below.

In the illustrated implementation, the configuration application 305includes a graphical configuration tool 308. Graphical configurationtool 308 can allow a non-technical user, such as an applicationdeveloper, to visually configure a pattern. The graphical configurationtool can provide an intuitive way in which to configure an application.An example of a graphical configuration tool is discussed in more detailbelow.

Application Development Framework

FIG. 5. illustrates an example framework 500 for application developmentbased on the configuration of patterns. At the base, framework 500includes a platform layer 510 on which applications execute. Two exampleplatform layers 510 are the Java 2 Platform, Enterprise Edition (J2EE),manufactured by Sun Microsystems, Inc. of Santa Clara, Calif. and theAdvanced Business Application Programming (ABAP)-based platformmanufactured by SAP. The platform layer is generally chosen (or alreadyestablished) by the enterprise that executes the applications.

To enable applications to execute on different platform layers 510,framework 500 includes a platform independent component development andrun-time layer 520. In this environment, applications can be developedusing modules known as components. Components can be stored in acomponent repository and reused—that is, each component can have morethan one instance, where the component instances are used in multipleapplications, or multiple times in the same application. Components canbe embedded (nested) within other components, and they can have zero ormore visual representations. In one implementation, each componentprovides three separate interfaces—a programming interface, a databinding interface, and a visual interface. The programming interface canbe used by an embedding entity (a component embedder—e.g., a higherlevel component, or an application) to interact with the embeddedcomponent. The visual interface can be used by a component embedder toaccess and use the visual representations of the embedded component (forexample, to form the component embedder's own visual representation).The data binding interface can be used by the component embedder toexchange data with the embedded component.

An example platform independent component development and runtime layer520 is the Web Dynpro environment manufactured by SAP. The Web Dynproenvironment is based on the Web Dynpro programming model, which conformsto the model-view-controller programming paradigm described below withrespect to FIGS. 6A and 6B. In one implementation, platform independentlayer 520 provides a framework for defining application components in adeclarative and/or graphical manner, without needing to program thecomponents for a particular platform layer 510. Platform independentlayer 520 also provides interfaces, tools, services, and other featuresto enable the application components to execute on a specific platformlayer 510. In another implementation, platform independent layer 520additionally provides functionality to enable application components torender user interfaces on a number of different clients, with platformindependent layer 520 performing the appropriate transformations forspecific clients.

Building on top of platform independent layer 520, framework 500includes a pattern layer 530 with one or more generic UI patterns. EachUI pattern is generic because it defines a particular pattern (e.g., afloor plan pattern, an OIP, an ODP, a GDP, and the like), but not thespecific content that is included for a specific application that usesthat pattern. The specific content for a specific application is createdby configuring the pattern as described above.

In one implementation, each UI pattern includes a configurationapplication and a pattern component. The configuration application andthe pattern component for each UI pattern can be applications that aredeveloped and executed on the platform independent layer 520 shown inFIG. 5. Using this approach, the configuration application and thepattern component for each UI pattern can take advantage of the featuresoffered by platform independent layer 520, including, for example,platform independence, client independence, and various functionalityoffered by platform independent layer 520, such as automatic input helpand validation based on declared data types.

In one implementation, each UI pattern is implemented as a single WebDynpro application 400, illustrated in FIG. 4A. The single Web Dynproapplication has two components, a configuration component 410 thatperforms the functionality of the configuration application, and anexecution component 420 that performs the functionality of the patterncomponent. Alternatively, as illustrated in FIG. 4B, the Web Dynproapplication 400 can be developed using a single component 430 with twoentry points—one for configuration 440 and one for execution 450. Theapplication 400 uses a different entry point depending on whether it isbeing used for configuration or execution of the pattern.

Yet another alternative, illustrated in FIG. 4C, is for each UI patternto be implemented as two separate Web Dynpro applications—one forconfiguration 460 and one for execution 470. Each of the two Web Dynproapplications is developed using a separate component (i.e., theconfiguration application 460 includes a configuration component, andthe execution application 470 includes a pattern or executioncomponent).

Referring back to FIG. 5, the top layer, application layer 540, containsthe actual applications to be run by end-users. In this framework, anend-user application is made up of one or more configured UI patterns.In an implementation where each UI pattern includes a pattern component,an end-user application is made up of one or more configured patterncomponents (e.g., pattern components and their correspondingconfigurations). An end-user application can be stored in aconfiguration repository in the form of configuration data andreferences to the associated pattern components.

Framework 500 thus enables application developers to developapplications by configuring generic pattern components into componentsfor specific applications (e.g., components that display the actualfields illustrated in UI 100). In one implementation, as described inmore detail below, configuration data (e.g., data in a configurationrepository or in one or more configuration files) is used to configure ageneric pattern component into a component for a specific application.The configuration data can be defined through the use of declarativeand/or graphical tools that are included, for example, in aconfiguration application, thus dramatically simplifying the task ofdeveloping applications. If, for example, the configuration applicationhas access to a meta data repository that specifies the fields availablefor a particular back-end system for which an application is beingdeveloped, the application developer can develop an application (e.g.,create a configuration) by simply choosing the fields in the meta datarepository to be included (e.g., displayed) in the application.

Framework 500 can be thought of as creating a role-based programmingmethodology, where layers 510, 520, 530, and 540 correspond to differentroles for different developers. Framework 500 is illustrated as atriangle to represent graphically that complexity and difficultydecrease for each role as one moves from the base layer to the toplayer. Thus, a developer who is responsible for building and maintainingthe platform independent layer 520 has the most complex and difficultjob, and must be familiar with the programming languages, tools, andother intricacies of one or more platform layers 510. A developer who isresponsible for building and maintaining UI patterns (e.g.,configuration applications and pattern components) has a simpler job, ashe or she can take advantage of the features and functionality offeredby the platform independent layer 520, as described above. Finally anapplication developer (a developer who is responsible for developingend-user applications) has the least complex job, as he or she cancreate applications simply by configuring predefined UI patterns. Wherethe configuration process is as simple as using a configurationapplication to choose the desired fields from a set of available fields,the application developer may not need to have any advanced programmingskills.

Example OIP Pattern Component

As described above, an application can be built by configuring a genericpattern component. FIG. 6A illustrates an example of a generic patterncomponent 600 for an OIP. Component 600 follows a model-view-controller(MVC) paradigm, and as such includes a model 605, a view 610, and acontroller 615. In the MVC paradigm, models generally implementapplication logic. Each model can have multiple views, where each viewdisplays information about the model to a user. A controller of theapplication receives events, for example, raised by a user interactingwith a view to manipulate the model. A model can have multiplecontrollers. Controllers can relate to zero or more views. Controllerscan also relate to an application in general, or to one or moreapplication parts or components. Models and controllers typicallyinclude application code. When changes occur in a model, the model canupdate its views. Data binding can be used for data transport between aview and its model or controller. For example, a table view can bedefined to display data from a corresponding table that is stored in amodel or controller. The table view is thus bound to the table,indicating that the table is to be used as the data source for the tableview. As another example, the table view can be replaced by a furtherview, such as a linked list, that binds against the same table. In thiscase, the further view can display the table data without requiring anychanges to be made to the controller or the model.

As explained earlier, an OIP can provide an interface to search for andselect objects. Accordingly, the model 605 in the OIP component 600includes a query 620 (e.g., a query class). Because an OIP is a genericUI pattern, query 620 represents a generic query. In one implementation,query 620 includes an input structure 625 of n parameters allowed forqueries, and a result structure 630 of m fields returned for each objectmeeting the search criteria.

View 610 of component 600 defines a user interface with a genericarrangement of UI elements for performing searches. View 610 includes atitle bar 635 that displays a caption to orient the user. View 610 alsoincludes a search bar with a drop down element 640 in which the user canselect from the available input parameters selected from the inputstructure 625. The search bar also includes a text entry box 645 inwhich the user can enter a match criterion for a search, and a “Go”button 650 to initiate the search.

Controller 615 of component 600 binds the UI elements of view 610 (e.g.,UI elements 635, 640, and 645) to data elements in a storage area(referred to as a context) that is associated with the controller 615.The context is a structured storage area with hierarchically arrangednodes and attributes. The context associated with the controller 615includes a query node 655 that includes an input structure 660. Theinput structure 660 in the controller context corresponds to the inputstructure 625 in the model 605, and can include up to the n parametersincluded in the input structure 625.

When the OIP pattern component 600 executes, the component receivesconfiguration data (e.g., from a configuration repository or one or moreconfiguration files), and, based on that configuration data, generateschild elements for the input structure context node 660, and binds thoseelements to elements in the view 610 and the model 605.

As an example, consider an application that allows end-users to searchfor and retrieve information about a company's customers. To create suchan application, a developer can configure an OIP pattern to use aspecific back-end system with customer information (e.g., a systemrepresented by back-end specific model 665). Back-end specific model 665indicates that the back-end system in this example can execute a querycalled customer query 670 that takes up to three input parameters (acustomer number, customer name, and customer city, as specified in thecustomer query input structure 675), and returns records with six fields(the six fields specified in the customer result structure 680). In anexample configuration, an application developer might specify that usersshould be able to run searches based on any of the three available inputparameters (i.e., that all three of the input parameters in the customerquery input structure 675 should be listed in the drop down element640). The developer might further specify that the content display areabelow the search bar in view 610 should display all six of the availablereturn fields listed in customer result structure 680.

The preceding configuration can be specified as configuration data, anexample of which is shown as XML data 690 in FIG. 6B. The XMLconfiguration data 690, which is discussed in more detail below, can beused to generate the execution-related entities in the pattern component600 that are required to implement the specified configuration for theOIP pattern. For example, in an implementation in which applications(including pattern components) are structured according to the WebDynpro programming model, several types of entities can be generatedbased on the configuration data, including UI elements (e.g., controlsin views), data structures (e.g., context entities such as nodes andattributes), and bindings (e.g., context bindings, which serve to coupleUI elements and context entities, and model bindings, which serve tocouple context entities and model entities).

As a specific example, the XML configuration data 690 includes a firstsection of data 692 that indicates that the pattern component 600 is toexecute searches using a query object named “CustomerQuery” in aback-end service module named “Customer.” A service module is a groupingof functionality in a back-end system; the functionality can includebusiness functionality that defines business objects or other entities(e.g., customers), and that provides access to such entities (e.g.,through query objects such as CustomerQuery). In this example, theCustomerQuery query object is represented by the customer query object670 in the model 665.

As discussed above, the application developer has chosen a configurationin which end-users are to be able to execute searches using any of thethree available input parameters in the customer query object 670. Thisselection of input parameters is indicated in a second section ofconfiguration data 694, which lists all three parameters (Number, Name,and City) from the input structure 675 in the customer query object 670.

In particular, the Number parameter 677 in the input structure 675 islisted in the section of configuration data 696. The Number parameter677 represents customer numbers, and its selection as an availablesearch parameter means that application end-users are to be able tosearch for customers by providing a customer number (as well as possibleadditional parameters). To enable such searches, a number ofexecution-related entities are added to the pattern component 600,including a Number UI element 622 and a Number context attribute 662.

The Number UI element 622 is added to the view 610 so that an end-usercan type in a customer number in that UI element. Though not shown inthe preview of the view 610 in FIG. 6B, the UI element 622 can bedisplayed and enabled in the view 610, for example, when an end-userselects an “advanced search” option that exposes a form with multiplefields in which the end-user can enter search criteria. Based on theconfiguration data 696, the UI element 622 is given the label “CustomerNo.” Moreover, because the configuration data 696 indicates thatstring-type input is to be provided for the Number input parameter, theUI element 622 is set to be a control that is operable to receive suchinput (e.g., a text box).

The Number attribute 662 in the context associated with the controller615 can be used by the pattern component 600 to store input dataprovided by an end-user in the UI element 622. As with the type of theNumber UI element 622, the type of the Number attribute 662 can be setbased on the data type indicated in the configuration data 696 (in thiscase, a “string” type). The coupling between the Number UI element 622and the Number attribute 662 can be enabled by binding the Number UIelement 622 and the Number attribute 662. Bindings between other typesof entities can also be created—for example, a context attribute (e.g.,the Number attribute 662) can be bound to a model entity (e.g., theNumber parameter 677 in the input structure 675 of the query object670). Such a binding, known as a model binding, generally serves tocouple an item with a model entity that represents an abstraction ofbusiness logic in a back-end system.

Similar entities (e.g., UI elements, data structure elements, andbindings) can be generated for the other two input parameters (Name andCity) specified in the section of configuration data 694. In addition,many other types of entities can be generated based on the configurationdata specified by an application developer. Such entities can be used bya pattern component for purposes of navigation and for other UI-relatedissues. For example, various entities can be generated for purposes ofimplementing advanced UI functionality, such as input help and inputvalidation.

The use of configuration data to generate execution-related entities fora pattern component can be carried out at various times, including, forexample, in a pre-execution operation (e.g., after the configurationdata has been specified), when the pattern component or application isloaded into a runtime system or otherwise launched, or during executionof the pattern component or application. In one implementation, theentities are generated on an on-demand basis as they are needed. Forinstance, in the preceding example, the Number UI element 622 can begenerated when the view 610 is first displayed, or even when the NumberUI element 622 first becomes visible (e.g., when the end-user exposes an“advanced search” form in the view 610).

Example Configuration Data

To configure a UI pattern (e.g., as in the example configurationdescribed above), a developer can associate the pattern with a specificback-end system and the entities (e.g., queries, input structure, inputparameters, input fields, result structure, and/or result fields)available within that back-end system. As described above, such anassociation can be specified as configuration data stored in aconfiguration repository or in one or more configuration files. Theapplication developer can use a configuration application that assistshim in selecting a back-end system, determining which parameters andother entities exist in the back-end system, selecting an appropriateset of those entities for an application, and specifying all suchselections as formatted configuration data (e.g., in a formattedconfiguration file).

In one implementation, the configuration application uses an interfacelayer that provides a generic interface to back-end systems. An exampleof such an interface layer is the interface layer in the EnterpriseService Framework (ESF) developed by SAP. The interface layer includes arepository with meta data corresponding to the back-end data.

Using the example in FIG. 6B, the back-end specific model 665 can bestored as meta data in the meta data repository of an interface layer.The application developer can determine from this meta data that thecustomer query 670 (defined by the back-end system) is one used to findcustomer objects. The meta data repository further includes theparameters 675 of the input to the query, namely a number, a name, and acity. The configuration application enables the application developer toselect any combination of input parameters 675 that is to be presentedin drop down element 640 when view 610 is rendered. The applicationdeveloper can also select which of the fields in result structure 680are to be displayed when result objects are returned from the back-endsystem in response to a query.

An example of configuration data that defines the search portion of aspecific application (i.e., that specifies a configuration for a searchpattern) is shown below:

<?xml version=“1.0” encoding=“UTF-8” ?> <SearchView Caption=“CustomerSearch”> <Query Service Module=“Customer” Query=“CustomerQuery”><QueryParameters> <Number Label=“Customer No.” Type=“string”/> <NameLabel=“Last Name” Type=“string”/> <City Label=“City” Type=“string”/></QueryParameters> </Query> </SearchView>

In this example, the configuration data is represented using XML. Takingthe data in order, the first line defines the version and encoding ofthe XML file. The next line defines the caption that is inserted intothe generic caption text 635 of pattern view 610. As indicated, theapplication associated with this configuration displays “CustomerSearch” in the title bar to orient the user that he or she is searchingfor customers. The next line specifies that the query to be executed forthis application is the “CustomerQuery” query within the “Customer”service module in the back-end system.

The next five lines specify the input parameters selected by theapplication developer to be included in drop down element 640. Asindicated in the data, the application developer has selected all threeof the available input parameters 675, namely “Number”, “Name”, and“City”. Further, the application developer has defined moreuser-friendly labels for each of the parameters. The configuration dataalso defines the data type for each of the parameters, so view 610 canprovide an appropriate control for each selected field. For example, inan advanced search view, a checkbox can be provided for a Boolean typeinput parameter, rather than the text entry box that is typically usedfor string type input parameters.

Although an application developer can generate configuration datadirectly, the use of a configuration application can advantageouslyenforce the required schema for the configuration data, so as to ensurethat the configuration data is successfully merged with a genericpattern component to generate a specific application.

FIG. 7 illustrates example roles and functions that can be involved inthe process of developing, configuring, and using pattern-basedapplications. The process begins with the development of pattern 712,which can include the development of a pattern or execution component717, and a corresponding configuration application 715 that is used toproduce configuration data 725 for the pattern component 717. Multiplelevels of patterns, and multiple patterns within each level, can bedeveloped. The top level can include different floor plans for differenttypes of business processes. The development of patterns can be carriedout by a pattern developer 710 in a pattern-providing organization(“pattern provider”). Pattern developers are typically skilledprogrammers.

To create a specific application 722 for a specific type of businessprocess, an application developer 720 can configure a floor plan patternthat corresponds to that type of business process (as well as possiblyone or more nested patterns). In the implementation shown in FIG. 7, theprocess of configuring a pattern involves the use of a configurationapplication 715 to create configuration data 725 for a correspondingpattern component 717. The configuration application 715 can be designedto be very simple to use—e.g., it can be designed to let an applicationdeveloper configure a pattern by simply choosing among multiplealternatives for each required piece of configuration data. Accordingly,application developers need not have programming skills—rather, they canbe non-technical people, such as program managers or business executiveswho are experts in a particular application or business area.

Multiple application development scenarios are possible. For example,patterns can be delivered by a pattern provider to a customer eitherwith or without corresponding configurations. In the former scenario, anapplication developer on the pattern provider side configures a patternand delivers a fully-configured pattern-based application 722 that isready to be used by an application end-user 730 on the customer side. Inthe latter scenario, the pattern provider delivers only the patterns(e.g., the configuration applications and the pattern components) to thecustomer, and an application developer on the customer side creates apattern application 722 by configuring one or more of the patterns. Asanother possible scenario, an application developer on the patternprovider side can create and deliver pre-configured applications, whichcan either be used directly by an end-user, or further adapted by anapplication developer on the customer side (e.g., by modifying thedelivered configurations) in order to meet the specific needs of thecustomer.

Graphical Configuration Tool

As mentioned previously, a graphical configuration tool can be used toassist a user such as an application developer in configuring anapplication. For example, a graphical configuration tool can present anapplication developer with an intuitive interface for configuring apattern. The interface can include a graphic representation of thepattern being configured. The graphic representation of the pattern caninclude graphic objects corresponding to the pattern elements in thepattern (e.g., the user interface elements, or other patterns nested inthe pattern).

As an example, an OIP can be defined to include multiple patternelements, such as a search form (e.g., the search bar 125 described inconjunction with FIG. 1), a query in a back-end system that is executedusing the search criteria specified by an end-user in the search form, alist pane that displays the results retrieved from the execution of thequery using a list or table format, and a form pane that displays thedetails of a selected entry in the list pane. Each of the above patternelements can be represented as a graphic object, and the graphic objectscan be connected in a way that intuitively represents the relationshipbetween the pattern elements in the OIP. For example, a graphic objectthat represents the search form can be connected with an arrow to aninbound connector in a graphic object that represents the query.Similarly, an arrow from the outbound connector of the graphic objectthat represents the query can be connected to a graphic object thatrepresents the list view. Finally, the graphic object that representsthe list view can be connected in a similar manner to a graphic objectthat represents the form view.

In a graphical configuration tool that represents patterns as describedabove, an application developer can indicate interest in an object(e.g., by clicking on the object), and thereby receive information aboutthe object. For example, if an application developer clicks on a graphicobject that corresponds to the search form, the graphical configurationtool can display the parameters that have been selected for searching.

FIG. 8 illustrates one example of configuring a pattern with a graphicalconfiguration tool. As illustrated, the graphical configuration toolpresents a user interface 800 that includes a first portion 810 and asecond portion 840. First portion 810 includes a storyboard area 812. Asillustrated, storyboard area 812 includes a graphical representation ofan object identification pattern (OIP) 820, which includes an data inputgraphic object 822, a back-end entity graphic object 824, a data outputgraphic object 826, and a data output graphic object 828. Each graphicobject corresponds to a pattern element in the OIP (e.g., a search form,a query, a list pane, and a chart pane).

Data input graphic object 822 represents the input of user data for anapplication. The data can indicate variables for one or more functionsthat can be performed on a set of data. In the example, the functionsinclude searching for data for OIP 820. Searching for data can entailusing parameters (e.g., fields) for searching and a search range (e.g.,a variable). Back-end entity graphic object 824 represents the back-endentity and/or functions for the data manipulation (e.g., search). Dataoutput graphic object 826 and data output graphic object 828 representthe format for displaying the results of the data manipulation. In thisexample, data output graphic object 826 represents a list of data, anddata output graphic object 828 represents a form for data. In operation,an end-user can switch between data output graphic object 826 and dataoutput graphic objects 828 by activating a toggling icon.

Data input graphic object 822, back-end entity graphic object 824, dataoutput graphic object 826, and/or data output graphic object 828 canprovide additional information about their functions and/or parametersto a user. To accomplish this, the information can be presented when auser indicates interest in one of the graphic objects (e.g., by clickingon the graphic object). The additional information can include selectedparameters and user interface elements for the associated patterncomponents.

In one mode of operation, data input graphic object 822, back-end entitygraphic object 824, data output graphic object 826, and data outputgraphic object 828 are be presented to a user in a generic form. Thatis, the specific content for an application (e.g., search parameters andresult fields) are unspecified. For the illustrated implementation, whena user specifies something about the application, the search parametersand the result fields associated with that query can be determined. Thiscan, for example, occur when a user specifies data about a back-endentity for the OIP. The back-end entity data can include system, module,and/or query. Once data about the back-end entity is known, it may bepossible for the graphical configuration tool to determine anappropriate query, and, hence, search parameters and results.

Determining appropriate search parameters and results can beaccomplished by interrogating a meta data repository that specifies thefields available for a particular back-end system for which theapplication is being developed. The configuration information can beexpressed in an XML format, which can be used to generate theexecution-related entities in the pattern component that are required toimplement the specified configuration for OIP 820.

In particular implementations, an automated selection of configurationinformation for OIP 820 can be performed for the user. For example, whena user configures OIP 820 by dropping a query onto storyboard area 812,the search parameters and result fields can be preselected by default.The user can then execute OIP 820 without having to make furtherselections. The user can also specify which, if any, parameters shouldnot be searched. Also, the available types of output data canautomatically be placed in data output graphic object 826 and dataoutput graphic object 828 for the user. Again, if he so desires, theuser can specify which, if any, output data should not be displayed.

OIP 820 also includes a data port tag 830. Data port tag 830 canrepresent the data presented in data output graphic object 826 and dataoutput graphic object 828 and data related to the presented data.Related data can, for example, be other data from a table that containsthe presented data. Relations can be modeled in the back-end system, andmeta data regarding the relations can be retrieved. Associating dataport tag 830 with an ODP (e.g., by dragging and dropping the tag) bindsthe data to the ODP and can allow the data represented by the tag to bedisplayed in the ODP.

Second portion 840 includes data for OIP 820. Second section 840includes a task section 850 and a data section 860. Task section 850allows a user to switch between different tasks for OIP 820. Forexample, a user can select a logical element task to see which logicalelements can be added to OIP 820 (e.g., a chart), or a user can select aproperties task to see fields of a selected graphic object. Data section860 includes data for a task selected in task section 850 and/or OIP820.

As illustrated, data section 860 includes a drop-down box 862 containingback-end systems, a drop-down box 864 containing back-end modulesassociated with the back-end system shown in drop-down box 862, and ascroll box 866 containing queries associated with the module shown indrop-down box 864. Drop-down boxes and scroll boxes are one example ofselection elements. In particular implementations, these boxes can beautomatically generated for the user so that he can select theinformation therein and have it applied to OIP 820.

FIG. 9 illustrates another example of configuring a pattern with agraphical configuration tool. As illustrated, the graphicalconfiguration tool presents a user interface 900 that includes a firstportion 910 and a second portion 940. First portion 910 includes astoryboard area 912. As illustrated, storyboard area 912 includes agraphical representation of an object data pattern (ODP) 920, whichincludes a back-end entity graphic object 922, data output graphicobjects 924, and data output graphic objects 926. Back-end entitygraphic object 922 represents the back-end entity supplying data for ODP920. Data output graphic objects 924 and data output graphic objects 926represent the format for displaying the data from the back-end entity.In this example, data output graphic objects 924 represent a list ofdata, and data output graphic objects 926 represent a form for data. ODP920 can be part of a floor plan that includes OIP 820.

Back-end entity graphic object 922, data output graphic objects 924, anddata output graphic objects 926 can provide further information abouttheir functions and parameters to a user. To accomplish this, theinformation can be presented when a user selects (e.g., clicks on) oneof the graphic objects. Information regarding the graphic objects canthen be displayed in user interface 900. The information can include thefields selected for the associated pattern component and the userinterface elements.

The illustrated implementation has three data output graphic objects924. Through these graphic objects, different data can be presented to auser. In particular, each of the graphic objects 924 can correspond to atab in the actual presentation of ODP 920. Thus, the presentation of theODP can have a “Flight Meal” tab, a “Flight Booking” tab, and a “FlightKey” tab. The tabs can represent the data from the OIP or related data.By selecting different tabs, the user is presented with differentinformation.

Data output graphic objects 926 can be similarly presented to a user.Also, a user can switch between data output graphic objects 924 and dataoutput graphic objects 926 by activating a toggling icon.

In one mode of operation, back-end entity graphic object 922, dataoutput graphic objects 924, and data output graphic objects 926 would bepresented to a user in a generic form (e.g., with the available andresult parameters unspecified). Then, when the user specified somethingabout the applications, the output data can be determined. For example,if the user specified the back-end entity that was to supply the data,the available output data can be determined. Additionally, if the userassociated an data port tag with the ODP, the available output data canbe determined.

In particular implementations, an automated selection of configurationinformation for ODP 920 can be performed for the user. For example, if auser configures the ODP by dragging a data port tag of an OIP anddropping it on storyboard area 912, or on the floor plan containing theODP, the ODP can be created with data fields preselected. The number ofactions required from the user to make an executable pattern cantherefore be reduced. The user can also specify which, if any, relateddata shown be shown and fields of data that should be shown.

ODP 920 also includes data port tags 928. Data port tags 928 representadditional data associated with the data presented in data outputgraphic objects 924. Associating one of data port tags 928 with anotherODP (e.g., by dragging and dropping it) can allow the data representedby the tag to be displayed in that ODP.

Second portion 940 includes data for ODP 920. Second section 940includes a task section 950 and a data section 960. Task section 950allows a user to switch between different tasks for ODP 920. Forexample, a user can select a logical element task to see which logicalelements can be added to ODP 920 (e.g., a chart), or a user can select aproperties task to see fields of a selected graphic object. Data section960 includes data for a task selected in task section 950 and/or ODP920.

As illustrated, data section 960 includes a scroll box 962 containingdata fields for the back-end system and a scroll box 964 containingproperties of the data fields in scroll box 962. In particularimplementations, these boxes can be automatically generated for the userso that he can select the information therein and have it applied to ODP920.

FIG. 10 illustrates another example of configuring a pattern with agraphical configuration tool. As illustrated, the graphicalconfiguration tool presents a user interface 1000 that includes a firstportion 1010 and a second portion 1040. First portion 1010 includes astoryboard area 1012. As illustrated storyboard area 1012 includes agraphical representation of a floor plan pattern 1020. Floor planpattern 1020 includes an OIP 1022 graphic object, an ODP graphic object1024, and ODP graphic objects 1026. Floor plan pattern 1020 can be thefloor plan for OIP 820 and ODP 920.

OIP graphic object 1022 can serve as an anchor point for floor planpattern 1020. That is, based on the output data specified in OIP graphicobject 1022, the data for ODP graphic object 1024 can be determined. ODPgraphic object 1024, in turn, can serve as an anchor point for ODPgraphic objects 1026. That is, based on the output data specified in ODPgraphic object 1022, the data for ODP graphic objects 1026 can bedetermined.

In one mode of operation, OIP graphic object 1022, ODP graphic object1024, and ODP graphic objects 1026 can be presented to a user in genericform (e.g., with the input and output parameters unspecified). Then, ifa user decides to configure part of the floor plan pattern related tothe OIP, he selects OIP graphic object 1022 and is presented with agraphic representation of the OIP (e.g., OIP 820) that presents patterncomponents related to the OIP (e.g., data input graphic objects,back-end entity graphic objects, and data output graphic objects). Theuser can then specify configuration information (e.g., searchparameters, query service modules, result lists, and result forms) forthe OIP. In the same way, if the user decides to configure the portionof the floor plan pattern related to one of the ODP, he selects ODPgraphic object 1024 and is presented with a graphic representation ofthe ODP (e.g., ODP 920) that presents pattern components related to theODP. The user can then specify configuration information for the ODP.This ability to “zoom in” to specific pattern components of the floorplan pattern allows a user to better appreciate the layout and functionsof the different pattern components and can also define for a user a setof possible logical elements and actions that the user can perform onthe pattern.

A user can also receive further information about OIP graphic object1022, ODP graphic object 1024, and ODP objects 1026. To accomplish this,the information can be presented when a user selects (e.g., clicks on)one of the graphic objects.

Graphically presenting the OIP, ODP, floor plan assists a user inintuitively understanding the responsibilities of each part of aconfiguration. Also, it can restrict a user to those actions that arepossible for configuring a pattern. Additionally, by allowing a user to“zoom in/zoom out,” the user is presented with a high level patterndiagram (i.e., OIP and connected to it ODP and sub-ODP patterncomponents).

Second portion 1040 includes data for floor plan pattern 1020. Secondsection 1040 includes a task section 1050 and a data section 1060. Tasksection 1050 allows a user to switch between different tasks for floorplan pattern 10120. For example, a user can select a logical elementtask to see which logical elements can be added to floor plan pattern1020 (e.g., a chart), or a user can select a proprieties task to seefields of a selected graphic object. Data section 1060 includes data fora task selected in task section 1050 and/or floor plan pattern 1020.

As illustrated, data section 1060 includes a drop-down box 1062containing back-end systems and a drop-down box 1064 containing back-endmodules associated with the back-end system shown in drop-down box 1062.In particular implementations, these boxes can be automaticallygenerated for the user so that he can select the information therein andhave it applied to floor plan pattern 1020.

Using a graphical configuration tool similar to the one underdiscussion, configuration can be accomplished in a model-based approach(i.e., the user can focus on data-model side of configuration). Inoperation, a user can first select a system and back-end entity (e.g.,service module). The user can then select a query and drop it on the OIPdiagram. From this, information about query search parameters and resultfields can be retrieved and, accordingly, displayed in search form andresult list and result form views. When the user creates an ODP,information about related data can be retrieved and displayed as tabsautomatically, so that user can focus on selecting which related data heneeds for the floor plan. When the ODP is configured, the user cancontinue configuration, by, for example, configuring a sub-ODP. Asub-ODP can be configured by dragging and dropping data port tagscorresponding to configured related ODPs. In this configuration process,the user can focus primarily on data modeling side of floor planconfiguration and receive a better overview of available data modelingcases.

A graphical configuration tool can also allow charts to be readilyassociated with output data and configured. For example, a user canspecify (e.g., drop and drop) a chart object for a result list or a formview and select the chart type, mode, categories and series. After that,when the associated floor plan is executed, a corresponding chart withselected fields is displayed with data from the back-end system.

FIG. 11A-B illustrates another example of configuring a pattern with agraphical configuration tool. As illustrated, the graphicalconfiguration tool presents a chart configuration module 1100 thatoverlays user interface 900. Chart configuration module 1100 can also bepresented in a variety of manners.

In the example, a chart is being configured for data output graphicobject 924 b of ODP 920. Thus, the data used to form the chart caninclude the data available in data output graphic object 924 b.

As mentioned previously, configuring a chart can be a multi-operationprocess. In the example, the user is guided through the process with anoperation bar 1110. For the stages in the operation, the user is allowedto indicate information in input section 1120.

In FIG. 11A, the user is presented with selection elements 1122 in inputsection 1120, for indicating information about the chart itself and itsdisplay. As illustrated, selection elements 1122 are drop-down boxes.Through selection elements 1122, the user can indicate the type ofchart, the dimension of the chart, and the mode of the chart. Fewer oradditional selection elements can be presented based on what the userselects in input section 1120.

In FIG. 11B, the user is presented with selection elements 1124 in inputsection 1120, for indicating the data to be used in the chart. Asillustrated, selection elements 1124 are scroll boxes in which the usercan select the appropriate data. The data types in the scroll boxes canbe generated based on the data in data output graphic object 924 b.Fewer or additional selection elements can be presented based on whatthe user selects in input section 1120.

The configuration process can continue similarly to that shown in FIGS.11A-B until all of the parameters for the chart have been specified.During execution, the chart can be displayed once a user has specifiedthat the back-end data associated with the chart is of interest.

Visually presenting information in a chart format often helps users tounderstand and draw conclusions from large amounts of data. Providing away for a user to readily configure charts for the data in the list anddata forms makes this data available.

FIG. 12 illustrates another example of configuring a pattern with agraphical configuration tool. As illustrated, the graphicalconfiguration tool presents an OIP 1200. FIG. 12 illustrates how OIP1200 might appear to a business expert using a graphical configurationtool. OIP 1200 has currently been configured for viewing employee dataof an organization.

OIP 1200 includes a query area 1210, a back-end entity area 1220, and aresult area 1230. Query area 1210 includes a first search area 1212 anda second search area 1216. First search area 1212 and second search area1216 contain data input graphic objects for OIP 1200, which, in thisexample, are search parameters graphic objects 1214, 1218, respectively.Back-end entity area 1220 contains representations of back-end entitiesfor the OIP, which, in this example, are query graphic objects 1222.Result area 1230 contains representations of data output graphic objectsfor the OIP, which, in this example, are data view graphic objects 1232.

Query area 1210 and result area 1230 are visual areas of OIP 1200. Thatis, these are the areas that an actual end user will see. These areascan be realized via states.

Query area 1210 has three search parameters graphic objects 1214, 1218.Search parameters graphic object 1214 represents a search for anemployee by a component of the employee's name (e.g., first, middle, orlast name). Search parameters graphic objects 1218 represent a searchfor an employee by a one or more parameters. Search parameters graphicobject 1218 a allows a search for an employee by one or more componentsof the employee's name, and search parameters graphic object 1218 ballows a search for an employee by one or more components of theemployee's organizational unit (e.g., division, branch, or section). Anapplication developer can also configure additional queries. Inoperation, search parameters graphic objects 1218 can be displayed atthe same time so that an end user can choose which query to execute.

Search parameters graphic objects 1218 can make use of query servicesfor a meta data interface layer. An example interface layer is theEnterprise Service Architecture (ESA) developed by SAP. The ESA includesa repository with meta data corresponding to back-end data.

Depending on the search selected by an end user, the back-end entityaccessed can differ. In this example, two query graphic objects 1222 areused. Query graphic object 1222 a is linked to search parameters graphicobject 1214 and search parameters graphic object 1218 a. Query graphicobject 1222 b is linked to search parameters graphic object 1218 b.Thus, search data from search parameters graphic object 1214 and searchparameters graphic object 1218 a is sent to query graphic object 1222 a,and search data from search parameters graphic object 1218 b is sent toquery graphic object 1222 b. Also, a different set of query parameterconfigurations can be used.

Furthermore, depending upon which search an end user selects, adifferent result view may be needed. In the illustrated example, dataview graphic object 1232 a is associated with query graphic object 1222a, and data view graphic object 1232 b is associated with query graphicobject 1222 b. OIP 1200 illustrates the linkage between data viewgraphic object 1232 a and query graphic object 1222 a and data viewgraphic object 1232 b and query graphic object 1222 b. Thus, the resultsfrom query graphic object 1222 a are conveyed to data view graphicobject 1232 a, and the results from query graphic object 1222 b areconveyed to data view graphic object 1232 b.

OIP 1200 also includes data port tags 1240, which represent ports ofdata view graphic object 1232 a and data view graphic object 1232 b.Together, the ports can represent the visible interface of OIP 1200 toan embedder, an OIP-ODP application component. The semantics in terms ofWeb Dynpro terminology is a component interface event (sendinginformation to the embedder) or a method (receiving information from theembedder) with a certain signature.

Additional elements can also exist. For example, a navigational link isan extension of a data link; it not only transports data, but alsoexecutes a navigation. As another example, there can be special kinds ofoperators (e.g., a sort operator to sort the result set of a serviceusing a certain criteria and a condition operator for choosing betweenseveral possible states that one can show). As a further example, aninfoset can represent the data that is transported. An infoset can havea designated structure. One type of infoset is a data object in ESA.Infosets may not be visualized in the graphical configuration tool, butmay be configured using property sheets. As an additional example,restrictive stereotypes can be defined by the pattern developer in orderto restrict the flexibility of the runtime for the purpose of userinterface standardization. Restrictive stereotypes represent acollection of constraints on a component. Restrictive stereotypes can bedeactivated by a business expert in order to have a higher degree offlexibility.

While this illustration of OIP 1200 presents a semantical picture forthe business expert, it can suppress many details to keep the complexityof the operation small. These details can be implicit assumptions forthe graphical configuration tool, and can be realized in theimplementation of the OIP Web Dynpro component.

Some of the implicit assumptions in the illustration are that secondsearch area 1216 is opened by a button “Open Advanced Search” displayedin first search area 1212 and that when second search area 1216 isselected, first search area 1212 is deactivated, but still visible.Also, it is assumed that a close button exists in second search area1216, which activates first search area 1212 again. Also, in theimplementation there are at least four ports that are outgoing of theOIP components instead of the displayed two. For example, one extra portper result view is required to distinguish between the information thatthe result view has been opened versus the selected row in the resultview being changed. Additionally, when the application is launched viaan object link, OIP 1200 displays only one business object in thedataview list. The dataview is minimized to one row. Furthermore, ingeneral, the patterns have minimized, normal, and maximizedperspectives. The semantics of this can depend on the pattern definitionand is, therefore, not necessarily generic.

FIG. 13 illustrates another example of configuring a pattern with agraphical configuration tool. As illustrated, the graphicalconfiguration tool presents a user interface 1300 that includes a firstportion 1310. First portion 1310 includes a storyboard area 1312, whichincludes graphic representation of a pattern 1320. Pattern 1320 can, forexample, be an ODP.

Pattern 1320 includes a back-end entity graphic object 1322 that hasvarious output ports. One of the ports is associated with a key, whichcan provide a link to sibling aspects. Sibling aspects can be presentedto a user for selection for data output graphic objects.

An aspect is a meta model class that represents an object (e.g., a datastructure) in a back-end entity. For example, in an object orientedback-end, an aspect can represent a business object such as employee,customer, order, address, or product. In a database back-end, an aspectcan represent a database row. An aspect itself can be table.

Aspects can be related and/or siblings. Related aspects have anexplicitly defined relationship. For example, a “customer order” aspectcan include multiple “order item” aspects that describe the itemsincluded in a particular order. Thus, an explicit relationship would bedefined (i.e., that a “customer order” aspect includes an aggregation of“order item” aspects). Aspects are siblings if they have a common keyaspect (e.g., search parameter).

In operation, when a user drops a data port tag into a pattern—an ODP,for example—output parameters can be displayed in result list and formview. But the user can also choose not to use this aspect, but a siblingaspect. In the illustration, the sibling aspects entries are presentedin a context menu 1324. The context menu can be presented when the userdrags from an output port. The sibling aspects can also be presented inany other appropriate manner.

FIGS. 14A-E illustrate an additional procedure that a graphicalconfiguration tool can perform to assist a user in configuring apattern. By this procedure, the graphical configuration tool candetermine a variety of configuration parameters based on a limitednumber of user selections.

FIG. 14A illustrates a user interface 1400 having a first portion 1410and a second portion 1450. First portion 1400 includes a storyboard area1412, which includes part of a floor plan pattern 1420. As illustrated,the part of floor plan pattern 1420 is an OIP 1430. OIP 1430 isrepresented by a data input graphic object 1432, a back-end entitygraphic object 1434, a data output graphic object 1436, and a dataoutput graphic object 1438. The graphic objects are presently generic(i.e., the parameters of their associated pattern components have notbeen defined).

Second portion 1450 includes a data area 1470. Data area 1470 presentsand allows a user to specify configuration information for floor planpattern 1420. In FIG. 14A, data area 1470 includes a drop-down box 1472by which a user can select a back-end system for OIP 1430. The graphicalconfiguration tool can, for example, determine the available back-endsystems by querying a meta model of the back-end systems and placedescriptions of them in drop-down box 1472.

FIG. 14B also illustrates first portion 1410 and second portion 1450 ofuser interface 1400. Again, first portion 1410 includes storyboard area1412, which includes OIP 1430 of floor plan pattern 1420. And OIP 1430is represented by data input graphic object 1432, back-end entitygraphic object 1434, data output graphic object 1436, and data outputgraphic object 1438, which are generic.

Second portion 1450, however, now presents a drop-down box 1474 by whicha user can select a module of the back-end system selected in drop-downbox 1472. A module can, for example, be a set of queries, businessobjects, or actions. The graphical configuration tool can, for example,determine the available modules of the selected back-end system byquerying a meta model of the back-end system and place descriptions ofthe modules in drop-down box 1474.

FIG. 14C also illustrates first portion 1410 and second portion 1450 ofuser interface 1400. Again, first portion 1410 includes storyboard area1412, which includes OIP 1430 of floor plan pattern 1420. And OIP 1430is represented by data input graphic object 1432, back-end entitygraphic object 1434, data output graphic object 1436, and data outputgraphic object 1438, which are generic.

Second portion 1450, however, now presents a drop-down box 1476 by whicha user can select a query of the module selected in drop-down box 1474.A query can, for example, be a database call. The graphicalconfiguration tool can, for example, determine the available queries ofthe selected module by querying a meta model of the module and placedescriptions of the available queries in drop-down box 1476. Uponselection of a query in drop-down box 1476, a graphic representation1490 of the selected query is shown in storyboard area 1412.

At this time, the query parameters and fields can be determined for OIP1430. This can, for example, be accomplished by querying a meta model ofthe selected module based on the selected query. The retrievedinformation is processed by the graphical configuration tool anddisplayed in OIP 1430 as fields in data input graphic object 1432, dataoutput graphic object 1436, and data output graphic object 1438. A usercan then select the data he needs for the pattern and perform anycustomization desired for the selected fields. The back-end entity canalso defined by this operation, and subsequent calls to retrieve searchparameters and result fields.

After configuring OIP 1430, the user can generate an ODP for floor planpattern 1420. FIG. 14D illustrates the generation of an ODP 1440 forfloor plan pattern 1420. As illustrated, user interface again includesfirst portion 1410 and second portion 1450, and first portion 1410include storyboard area 1412.

ODP 1440 is generated by dragging and dropping an OIP outgoing data portin first portion and specifying that the outgoing port is to beassociated with an ODP. Upon specifying the association, ODP 1440 can begenerated, as shown in FIG. 14E. In other implementations, a floor planpattern may already have an ODP specified (e.g., OIP-ODP-OPD), whichneeds to be configured by a user.

The graphical configuration tool can then determine the aspects relatedto the outgoing port. To accomplish this, the tool can query meta datathat describes the aspect and any related aspects. Additionally, querieswith the same result aspect can be found. This information is processedby the tool and is displayed in first portion 1400, and can be used forthe configuration of advanced queries. Second portion 1450 displaysinformation regarding the fields of the aspects for a selected dataoutput graphic object.

The queries to obtain information regarding the back-end systems,modules, queries, fields, and aspects can be performed by Javacomponents that use the meta model to access R/3 meta data. Inparticular implementations, the Java components can act as an agent forthe graphial configuration tool. The description can be represented inXML, and the Java components can run on a J2EE server and be accessibleby an XML-based protocol over HTTP. The results can be displayed in adiscovery task section of a user interface.

Additionally, the client part of the graphical configuration tool canallow these components to browse the back-end meta data. Thus, the usercan be presented with a graphical user interface that hides thecomplexities and allows easy browsing of the meta data and configurationof patterns. For example, a user can look through a list of availablequeries in a service module before picking a query to use. Also, bydropping a query, the user can readily check its parameters and resultfields.

The Java components can be accessed by using a protocol handler (entrypoint for requests) that creates Java components based on theinformation in an XML request. The set of components can be independentfrom each other and, in this way, allow easy extensibility. In caseadditional browsing components are required, a component can beimplemented without any changes to other components. The requests tothese components will contain information about it, and the protocolhandler will automatically instantiate the component and forward therequest to it. The Java components can also support caching of heavilyinstantiated cool objects. Each user session can have its own cache.

Furthermore, the client part can be used independent from graphicalconfiguration tool and, thus, can be accessed from other client. Anexample access protocol can be based on XML over HTTP.

The Java components can be part of Java Debug Interface (JDI) and,hence, can benefit from all its capabilities, like versioning in adesign time repository (DTR), packaging and deployment, and centralserver builds.

Migrating Applications Over to Patterns

As will be described below, the graphical configuration tool can be usednot only to develop and configure pattern-based applications, but alsoto migrate non-pattern-based applications over to patterns, that is, toconvert the non-pattern based applications into patterns-basedapplications.

FIGS. 15A and 15B show scenarios where such migration might bedesirable. In the first scenario 1510, a company has one or moreoff-line applications (e.g., Microsoft Access applications, or LotusNotes applications). These applications require installation on everyclient that will be using the applications. Using the migrationtechnique described below, these off-line applications can be convertedto on-line applications that do not require any client installation.

In the second scenario 1520, a company has one or more patternapplications that are accessible through a portal and one or more legacyapplications that are not pattern-based. Using the migration processdescribed below, the legacy applications can be converted topattern-based applications. Migrating the legacy applications over topatterns enables all the applications to be accessed through the sameportal. Also, any run-time services provided by the portal (e.g.,support for multiple foreign languages, or support for styles andbranding) is automatically made available to all applications. Inaddition, with all the applications being based on patterns, theapplications share a common look and feel, thereby reducing the trainingcosts and the maintenance costs for the applications.

FIG. 16 illustrates one implementation of a system 1600 for migratingapplications using configurable patterns. By using configurable patternsto perform the migration, the entire migration can be performed withoutmanually rewriting the code of the application being migrated. Forexample, the system 1600 can migrate the user interface for theapplication without performing a literal, pixel-to-pixel migration ofthe user interface. Instead, the entire user interface as a whole can bereplaced by a new pattern-based user interface. The pattern-based userinterface may look somewhat different from the original user interface,but the application functionality will be the same.

As shown in FIG. 16, the system 1600 includes a pattern-basedenvironment 1610 for developing and executing pattern-basedapplications. The pattern-based environment 1610 includes aconfiguration application 1640 and pattern application 1650. The patternapplication 1650 is accessible through a portal 1660 hosted by a webapplication server. One such web application server is the SAPNetWeaver, available from SAP AG of Walldorf (Baden), Germany.

The configuration application 1640 provides a graphical configurationtool 1670. Integrated with the graphical configuration tool 1670 are avisual query modeler 1680 and a visual database modeler 1690. The visualquery modeler and the visual database modeler will be described in moredetail below.

The system 1600 also includes an interface layer 1620. As describedabove, the interface layer provides a generic interface to the back endsystems 1630 used by the pattern-based applications. The genericinterface allows the pattern-based environment 1610 to access the datain the back end systems without regard to which type of back end isbeing used. With such an interface, the pattern-based environment 1610can continue to work with the application even if the back-end of theapplication is subsequently migrated to a different back-end.

FIG. 17 shows an example of an interface layer 1700 that can be usedwith both SAP R/3 databases and with relational databases developed byother database vendors. The interface layer 1700 provides access to aset of R/3 service entities 1710 as well as a corresponding set ofrelational data entities 1720. The R/3 entities include queries,actions, aspects and relations. These entities can be mappedrespectively to SQL queries, stored procedures, tables, and foreign keyrelations in a relational database.

With such an interface layer, the same patterns can be used withdifferent back ends. It is not necessary to use a different set ofpatterns when a different back end is used. An example of an interfacelayer that can be used with multiple databases and other back-endsystems is described in U.S. application Ser. No. 10/842,958, filed May11, 2004, entitled BROWSING META DATA FOR AN ENTERPRISE SERVICEFRAMEWORK.

During system operation, as shown in FIG. 18A, a developer determinesthe functionality of the application to be migrated (step 1810). Thisdetermination can be made, for example, by manually examining theapplication.

The developer then selects one or more appropriate patterns based onthis determination (step 1820). The patterns are selected from a libraryof patterns provided by the pattern-based development and executionenvironment.

The developer then configures the selected patterns to providefunctionality that matches the functionality of the application (step1830).

For example, suppose the application provides a search function that canbe used to search for objects. In this example, the developer can selectan OIP pattern. The OIP pattern displays a search input form andexecutes a query based on search input values entered into the searchinput form by an end-user. The OIP pattern displays the results of thequery in a search results list.

In this example, the developer can configure the search input form sothat it displays the same search parameters as the original searchfunction and executes the same query as the original search function.

More specifically, as shown in FIG. 18B, the configuration (step 1830)involves first specifying a back end system to be used with the selectedpatterns (step 1840). In the migration case, the back end that isspecified is the back end of the application being migrated.

The developer then imports the database structure of the selected backend (step 1850). Optionally, the developer can model a new databasestructure or modify an existing database structure, as will be describedbelow with respect to the visual database modeler.

Once the database structure has been imported, the developer models aquery to be performed on the database (step 1860). To model the query,the developer can import a pre-defined query from the back end.Alternatively, the developer can define a custom query, for example,using a visual query modeler, as will be described in more detail below.

In one implementation, the query modeling and the database importing andmodeling can be performed using a number of design-time servicesprovided by the graphical configuration tool. As shown, in FIG. 19,these services 1910 can include a database layout service, a relationscreation service, a pattern-based auto-modeling service, and a visualquery modeling service. These services can be supported by a number oflower-level services 1920, including a tables retrieval service, aforeign key retrieval service, a fields retrieval service, a queriesretrieval service, and a query generation service. The lower-levelservices 1920 can communicate with the back end systems through theinterface layer, as described previously.

In one implementation, the design-time services can be provided by avisual database modeler and a visual query modeler integrated with thegraphical configuration tool.

Visual Database Modeler

The visual database modeler allows a developer to generate a graphicalrepresentation, or visual model, of the structure of a database. FIG. 20shows an example of a visual model 2000. Each box 2010 represents atable and each link 2020 represents a relation between tables.

By visually manipulating the visual model, the developer can performstandard database modeling actions, including but not limited to:adding, deleting or modifying tables, table fields, or relations. Forexample, the developer can drag the tables around to rearrange theirlayout. The developer can also click on a table to view and modify itsfields. The developer can create a relation visually by dragging a linkbetween two tables and then selecting the primary key and foreign keyfields from drop-down menus.

The visual database modeler can be used not only to modify the structureof an existing database, but also to model a new database from scratch.In one implementation, the database modeler provides an auto-generatefeature that minimizes the amount of user input required to build adatabase. For example, in response to user input requesting creation ofa new database table, the visual database modeler can automaticallycreate a new database table and automatically generate the table namesand field names without any further user input. This feature can beuseful, for example, for building quick prototypes.

After the visual modeling is complete, the developer can save the visualmodel. The visual model can be saved in XML (extensible markup language)format. The XML file can be viewed and modified without use of adatabase modeling tool.

The visual model can be saved without updating the database.Alternatively, the database can be updated to reflect the new model. Thenew model can also be imported into a different database.

Visual Query Modeler

The visual query modeler allows a developer to model a query visuallywithout using a query language. FIG. 21A shows an example of a visualmodel 2100 for a query and FIG. 21B shows the equivalent SQL (StructuredQuery Language) code 2110 for this query. As shown, a portion of thequery (Suppliers=?) is left undefined. As will be described below, thisportion of the query will be defined during the configuration of apattern that uses the query.

The developer can modify the visual model by clicking and draggingelements of the visual model 2100. The developer can specify inputs andoutputs for the query by creating an input port 2120 and an output port2130 and then connecting each of these ports to one or more tables. Inthe example shown in FIG. 21, the query only has one input table and oneoutput table. However, for more complex queries, more than one input oroutput table can be specified.

A query modeled using the visual query modeler can be used in a pattern.For example, FIG. 22 illustrates an OIP pattern 2200 as graphicallyrepresented by a graphical configuration tool. The OIP pattern 2200includes a search input form 2210, a search results list 2230, a searchresults form 2340, and an output data port 2250.

The OIP pattern 2200 can be configured by connecting the search inputform 2210 and search results list 2230 to a query 2220 modeled using thevisual query modeler. The developer can then select which input fieldsof the modeled query 2220 will be displayed in the search input form2210 and which output fields of the modeled query will be displayed inthe search results list 2230 and search results form 2240, and bound tothe output data port 2250.

Optionally, the developer can define one or more data operations to beperformed on the query output. The operations include, but are notlimited to, formatting operations, for example, operations that sort orgroup the output data according to certain fields, and data manipulationoperations, for example, an operation that calculates the sum or productof multiple output data values.

In one implementation, the visual query modeler can automaticallygenerate queries based on selected patterns. For example, the visualquery modeler can automatically generate queries for an ODP patternbased on the output of an OIP pattern. As previously described, the ODPpattern is a pattern that displays related data for an item selectedfrom the OIP search results. The visual query modeler can automaticallyretrieve this related data by automatically generating queries based onexisting relations in the back end system.

The visual query modeler can also adapt the query output. Adaptationallows for fields from related tables to be added to the query outputtable. For example, suppose the query output table contains CustomerID.The query can be adapted to display customerName instead of, or inaddition to, the CustomerID. The adaptation process involves creating anew view that includes fields from the query output table as well as therelated tables. The adapted query is then generated based on the newview.

In one implementation, as shown in FIG. 23, the visual database modelerand visual query modeler 2300 are universal tools that can be used witha variety of different types of databases 2310 from different databasevendors. The modelers 2300 can communicate with the databases using ageneric database connectivity protocol that is not specific to aparticular database. Once such protocol is the JDBC (Java DatabaseConnectivity) protocol 2320, available from Sun Microsystems, of SantaClara, Calif. The retrieved data can be represented and stored in XML(extensible markup language) format 2330.

The visual database modeler and the visual query modeler can be accessedon-line, for example, through a web browser 2340. This enables themodelers to be used from any networked computer without installation ofcode for the modelers on the networked computer.

The visual database modeler and the visual query modeler can each beimplemented as a component of the graphical configuration tool, asdescribed above. Alternatively, the modelers can also be made availableas separate stand-alone development tools.

Example Migration

FIGS. 24-29 illustrate an example migration using the above-describedtechniques and visual modeling tools.

FIG. 24 shows an application 2400 to be migrated. As described above, adeveloper determines the functionality of the application to be migratedand then selects one or more patterns based on this determination. Inthis case, the application is used to search for products offered by aparticular supplier (identified in a supplier input form 2410). Theresults of a product search is shown in a results window 2420.

As shown in FIG. 25, the developer selects an OIP pattern 2500 using agraphical configuration tool. The developer will then configure the OIPpattern 2500 so that it provides the same or similar functionality asthe application 2400. More specifically, the OIP pattern 2500 will beconfigured to execute a similar query into the application database, andto display similar results retrieved from the application database.

As shown in FIG. 26, the developer specifies a backend 2610 and importsa database structure from the specified backend. The graphicalconfiguration tool displays a visual model 2620. The developer can theninteract with the visual model to define a query 2630 based on thedatabase structure. In this example, the developer has defined a querythat searches the Suppliers table.

As shown in FIG. 27, the developer then defines the fields 2710 to bedisplayed in the OIP results list 2720. In this example, the selectedfields include an address field, a city, field and a fax field.

As shown in FIG. 28, the developer then selects another pattern, an ODPpattern 2800. The ODP pattern is used to show products corresponding toa supplier selected from a results list in the OIP pattern showingretrieved suppliers. The developer does not need to define queries forthe ODP pattern because these are generated automatically. That is, thequery to retrieve the products corresponding to a particular supplier isgenerated automatically when the output port of the OIP pattern (whichrepresents a selected supplier) is linked to the input port of the ODPpattern. The query can be built automatically based on the predefinedrelationships between the supplier table and other tables in theapplication database model. FIG. 29 shows a query structure 2900 for aquery used by the ODP pattern.

FIG. 30 shows the migrated application. The original supplier input form(i.e., the Suppliers window 2410) has now been replaced by the OIPpattern 3010, and the list of retrieved products (i.e., the Product Listwindow 2420) has now been replaced by the ODP pattern 3020.

The above-described techniques can be implemented in digital electroniccircuitry, in computer hardware, firmware, or software, or incombinations thereof. Particular implementations can be as a computerprogram product (i.e., a computer program tangibly embodied in aninformation carrier (e.g., in a machine-readable storage device or in apropagated signal)) for execution by, or to control the operation of, adata processing apparatus (e.g., a programmable processor, a computer,or multiple computers). A computer program can be written in any form ofprogramming language, including compiled or interpreted languages, andit can be deployed in any form, including as a stand-alone program or asa module, component, subroutine, or other unit suitable for use in acomputing environment. A computer program can be deployed to be executedon one computer or on multiple computers, at one site or distributedacross multiple sites and interconnected by a communication network.

Method operations can be performed by one or more programmableprocessors executing a computer program to perform display functions ofthe invention by operating on input data and generating output. Methodoperations can also be performed by, and an apparatus can be implementedas, special purpose logic circuitry (e.g., an FPGA (field programmablegate array) or an ASIC (application-specific integrated circuit)).Modules can refer to portions of the computer program and/or theprocessor/special circuitry that implements that functionality.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory, arandom access memory, or both. The essential elements of a computer area processor for executing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data (e.g.,magnetic, magneto-optical disks, or optical disks). Information carrierssuitable for embodying computer program instructions and data includeall forms of non-volatile memory, including by way of examplesemiconductor memory devices (e.g., EPROM, EEPROM, and flash memorydevices), magnetic disks (e.g., internal hard disks or removable disks),magneto-optical disks, and CD-ROM and DVD-ROM disks. The processor andthe memory can be supplemented by, or incorporated in special purposelogic circuitry.

To provide for interaction with a user, the above described techniquescan be implemented on a computer having a display device (e.g., a CRT(cathode ray tube) or an LCD (liquid crystal display) monitor) fordisplaying information to the user and an input device (e.g., a keyboardand a pointing device (e.g., a mouse or a trackball)) by which the usercan provide input to the computer (e.g., interact with a user interfaceelement). Other kinds of devices can be used to provide for interactionwith a user as well. For example, feedback provided to the user can beany form of sensory feedback (e.g., visual, auditory, or tactile), andinput from the user can be received in any form, including acoustic,speech, or tactile input.

The above-described techniques can be implemented in a distributedcomputing system that includes a back-end component (e.g., a dataserver), a middleware component (e.g., an application server), and/or afront-end component (e.g., a client computer having a graphical userinterface and/or a Web browser through which a user can interact with anexample implementation). The components of the system can beinterconnected by any form or medium of data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”) and a wide area network (“WAN”) (e.g., theInternet), and include both wired and wireless networks.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

The invention has been described in terms of particular implementations,but other implementations can be achieved, and are within the scope ofthe following claims. For example, the operations of the invention canbe performed in a different order and still achieve desirable results.In certain implementations, multitasking and parallel processing may bepreferable. As another example, although the use of UI patterns has beendescribed in connection with business objects and business data,patterns can be used with other types of objects and with data that isnot business-related.

Patterns can also be developed using different development processes indifferent development environments, and executed in different run-timesystems. For example, patterns can be developed using an integrateddevelopment environment (IDE) that incorporates tools for building,testing, deploying, and maintaining applications (e.g., configurationapplications and pattern components). Such tools can include visualdevelopment tools, templates (e.g., code templates), and classlibraries. A class library can include base classes that provide basicfunctionality (e.g., input/output, string manipulation, and networkcommunication), as well as specialized classes that provide enhancedfunctionality (e.g., classes for building and using graphical userinterfaces on clients, and for offloading application functionality ontosmart clients). Where an IDE supports multiple languages, classlibraries can provide a consistent development interface across thoselanguages.

In addition, some IDEs also provide services and functionality that canbe used to reduce the amount of code that needs to be written manually.Such functionality can include, for example, the ability to declare andbind to data types and the ability to bind application elements such ascontrols and data structures.

IDEs can also provide code generation capabilities—for example, theability to automatically generate plumbing code (e.g., code for drawingwindows or accessing Web services), or the ability to automaticallygenerate run-time code (e.g., by using code generators, compilers, orboth). The automatic generation of run-time code allows programs to betargeted to multiple platforms. For example, a code generator can beused to automatically generate run-time code for one or more specificplatforms based on the program code produced by a developer.Alternatively, the developer code can be compiled for a run-time system,which can be hosted in multiple environments (e.g., servers, clients, ora combination of servers and clients).

Some IDEs also provide the ability to create meta data that specifiesdescriptive information about an application, and that can be used by arun-time system to provide services to the application. Meta data can beexplicitly declared by a developer, generated in the process ofgenerating run-time code, or both.

Examples of IDEs that can be used to develop patterns include IDEs thatare built using the open Eclipse Platform supported by the EclipseFoundation (e.g., the Web Dynpro IDE developed by SAP, or the WebSphereStudio IDE developed by IBM Corp. of Armonk, N.Y.), as well asproprietary IDEs (e.g., the Visual Studio .NET IDE developed byMicrosoft Corp. of Redmond, Wash.).

The overall process of developing a pattern (including, for example,developing a configuration application and a pattern component) caninclude a design time aspect and a run-time aspect. The design timeaspect can involve use of the IDE to write code and to declareattributes, bindings, and other meta data. The code and the meta datacan then be used to generate run-time code to be executed in a run-timesystem. Some development environments can be coupled to a correspondingrun-time system, which allows programs developed in such developmentenvironments to take advantage of services offered by the correspondingrun-time systems. For example, in the Web Dynpro environment discussedin conjunction with FIG. 5, applications can take advantage of servicessuch as input help and validation offered by the Web Dynpro runtime,which frees developers from having to code such functionality manuallyinto their programs.

Run-time systems provide a code execution environment that generallyincludes core services (e.g., memory, process, and session management),as well as enhanced services (e.g., input help and validation). Inaddition to the Web Dynpro runtime, other examples of run-time systemsinclude virtual machines (e.g., the Java Virtual Machine), and theCommon Language Runtime (a run-time system developed by Microsoft Corp.)As specified above, run-time systems can be hosted in multipleenvironments, including servers and clients. Servers generally provide acore operating environment for applications (e.g., by providing arun-time system in which the applications can execute). An example of aserver is a J2EE-compliant server, such as the Web Application Serverfrom SAP or the WebSphere Application Server from IBM Corp.

1. A computer program product, tangibly embodied in a machine-readablestorage device, the computer program product being operable to cause adata processing apparatus to perform operations comprising: developing apattern-based application that matches the functionality of apreexisting application by: receiving user instructions to select apattern from a set of application development patterns, the selectedpattern comprising prearranged user interface elements; importingdatabase structure from a database used by the pre-existing application;receiving user instructions to generate a visual model of a queryperformed on the database, the visually modeled query having inputfields processed by the query to generate an output, the input fieldscorresponding to sets of values; generating code for the visuallymodeled query based on the visual model; receiving user instructionsspecifying a subset of the input fields of the visually modeled queryfor display in the user interface elements of the selected pattern; andconfiguring the selected pattern based on the imported databasestructure to: display the specified subset of input fields of thevisually modeled query in the user interface elements of the selectedpattern; and use the visually modeled query for accessing the databaseused by the pre-existing application, the database having sets of valuescorresponding to the specified subset of input fields of the visuallymodeled query.
 2. The product of claim 1, wherein the database structureis imported by communicating with the database through a genericinterface layer that provides a generic way to communicate withdifferent types of back-end databases developed by different databasevendors.
 3. The product of claim 2, wherein the generic interface layeruses JDBC (Java Database Connectivity) technology.
 4. The product ofclaim 1, wherein the visual model is generated using a visual querymodeler, the visual query modeler being a tool that generates visualmodels of queries and allows a user to modify the queries bymanipulating the visual models.
 5. The product of claim 4, wherein thevisual query modeler is an on-line tool that runs in a web browser. 6.The product of claim 1, wherein configuring the selected pattern to usethe visually modeled query includes adapting the selected pattern todisplay the query output.
 7. The product of claim 1, further comprisingautomatically generating one or more additional queries based on theselected pattern.
 8. A computer-implemented method for developing apattern-based application that matches the functionality of apre-existing application, the method comprising the steps implemented bya computer of: receiving user instructions to select a pattern from aset of application development patterns, the selected pattern comprisingprearranged user interface elements; importing database structure from adatabase used by the pre-existing application; receiving userinstructions to generate a visual model of a query performed on thedatabase, the visually modeled query having input fields processed bythe query to generate an output, the input fields corresponding to setsof values; generating code for the visually modeled query based on thevisual model; receiving user instructions specifying a subset of theinput fields of the visually modeled query for display in the userinterface elements of the selected pattern; and configuring the selectedpattern based on the imported database structure to: display thespecified subset of input fields of the visually modeled query in theuser interface elements of the selected pattern; and use the visuallymodeled query for accessing the database used by the pre-existingapplication, the database having sets of values corresponding to thespecified subset of input fields of the visually modeled query.
 9. Themethod of claim 8, wherein the database structure is imported bycommunicating with the database through a generic interface layer thatprovides a generic way to communicate with different types of back-enddatabases developed by different database vendors.
 10. The method ofclaim 9, wherein the generic interface layer uses JDBC (Java DatabaseConnectivity) technology.
 11. The method of claim 8, wherein the visualmodel is generated using a visual query modeler, the visual querymodeler being a tool that generates visual models of queries and allowsa user to modify the queries by manipulating the visual models.
 12. Themethod of claim 11, wherein the visual query modeler is an on-line toolthat runs in a web browser.
 13. The method of claim 8, whereinconfiguring the selected pattern to use the visually modeled queryincludes adapting the selected pattern to display the query output. 14.The method of claim 8, further comprising generating one or moreadditional queries automatically based on the selected patterns.
 15. Themethod according to claim 8, further comprising presenting a user optionto select one of a plurality of databases, the selected database beingthe database used by the pre-existing application.
 16. The methodaccording to claim 8, wherein the selected pattern is an objectidentification pattern for searching for objects in the database, andthe object identification pattern is configured to run the visuallymodeled query when a search is executed in the object identificationpattern.
 17. An apparatus for developing a pattern-based applicationthat matches the functionality of a pre-existing application, theapparatus comprising: means for receiving user instructions to select apattern from a set of application development patterns, the selectedpattern comprising prearranged user interface elements; means forimporting database structure from a database used by the pre-existingapplication; means for receiving user instructions to generate a visualmodel of a query performed on the database, the visually modeled queryhaving input fields processed by the query to generate an output, theinput fields corresponding to sets of values; means for generating codefor the visually modeled query based on the visual model; means forreceiving user instructions specifying a subset of the input fields ofthe visually modeled query for display in the user interface elements ofthe selected pattern; means for configuring the selected pattern basedon the imported database structure to: display the specified subset ofinput fields of the visually modeled query in the user interfaceelements of the selected pattern; and use the visually modeled query foraccessing the database used by the pre-existing application, thedatabase having sets of values corresponding to the specified subset ofinput fields of the visually modeled query; and a processor forimplementing at least the means for configuring.